/**
 * Descripttion 验证
 * @version 1.0.0
 * @Author Bell
 * @Date 2021-11-18
 * @LastEditors Bell
 * @LastEditTime 2021-11-18
 * @example 使用
     引入 import V from '@/assets/scripts/validate.ts'
     表单中使用如下
     <el-form :model="formData">
       <el-form-item label="汉字" prop="xxx" :rules="[V.required, V.chinese]">
         <Input v-model.trim="formData.xxx" />
       </el-form-item>
     </el-form>
     表格表单中使用如下
     <el-form :model="formData">
       <el-table :data="formData.tableData">
         <el-table-column width="200" label="日期">
           <template slot-scope="scope">
             <el-form-item :prop="`tableData.${scope.$index}.xxx`" :rules="[V.required]" label=" " label-width="0">
               <DatePicker width="100%" v-model="scope.row.xxx"/>
             </el-form-item>
           </template>
         </el-table-column>
       </el-table>
     </el-form>
 */
export default {
  required: { required: true, message: '不能为空' }, // 非空
  chinese: { validator: chinese }, // 汉字
  identity: { validator: identity }, // 身份证号码
  phone: { validator: phone } // 手机号
}

// 汉字
function chinese(rule: any, value: string, callback: any) {
  if (!value) {
    callback();
    return;
  }
  var regexps = /^[\u4e00-\u9fa5]*$/;
  if (regexps.test(value)) {
    callback();
  } else {
    callback(new Error('请输入汉字'));
  }
}

// 身份证号码
function identity(rule: any, value: string, callback: any) {
  if (!value) {
    callback();
    return;
  }
  var regexps = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  if (regexps.test(value)) {
    callback();
  } else {
    callback(new Error('请输入正确的身份证号码'));
  }
}

// 手机号 11位数字
function phone(rule: any, value: string, callback: any) {
  if (!value) {
    callback();
    return;
  }
  var regexps = /^[0-9]{11}$/;
  if (regexps.test(value)) {
    callback();
  } else {
    callback(new Error('请输入正确的手机号'));
  }
}
